package org.fisco.bcos.asset.contract;

import java.math.BigInteger;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.List;
import java.util.concurrent.Callable;
import org.fisco.bcos.channel.client.TransactionSucCallback;
import org.fisco.bcos.channel.event.filter.EventLogPushWithDecodeCallback;
import org.fisco.bcos.web3j.abi.EventEncoder;
import org.fisco.bcos.web3j.abi.FunctionReturnDecoder;
import org.fisco.bcos.web3j.abi.TypeReference;
import org.fisco.bcos.web3j.abi.datatypes.DynamicArray;
import org.fisco.bcos.web3j.abi.datatypes.Event;
import org.fisco.bcos.web3j.abi.datatypes.Function;
import org.fisco.bcos.web3j.abi.datatypes.Type;
import org.fisco.bcos.web3j.abi.datatypes.Utf8String;
import org.fisco.bcos.web3j.abi.datatypes.generated.Bytes32;
import org.fisco.bcos.web3j.abi.datatypes.generated.Int256;
import org.fisco.bcos.web3j.crypto.Credentials;
import org.fisco.bcos.web3j.protocol.Web3j;
import org.fisco.bcos.web3j.protocol.core.RemoteCall;
import org.fisco.bcos.web3j.protocol.core.methods.response.Log;
import org.fisco.bcos.web3j.protocol.core.methods.response.TransactionReceipt;
import org.fisco.bcos.web3j.tuples.generated.Tuple1;
import org.fisco.bcos.web3j.tuples.generated.Tuple2;
import org.fisco.bcos.web3j.tuples.generated.Tuple3;
import org.fisco.bcos.web3j.tuples.generated.Tuple4;
import org.fisco.bcos.web3j.tx.Contract;
import org.fisco.bcos.web3j.tx.TransactionManager;
import org.fisco.bcos.web3j.tx.gas.ContractGasProvider;
import org.fisco.bcos.web3j.tx.txdecode.TransactionDecoder;

/**
 * <p>Auto generated code.
 * <p><strong>Do not modify!</strong>
 * <p>Please use the <a href="https://docs.web3j.io/command_line.html">web3j command line tools</a>,
 * or the org.fisco.bcos.web3j.codegen.SolidityFunctionWrapperGenerator in the 
 * <a href="https://github.com/web3j/web3j/tree/master/codegen">codegen module</a> to update.
 *
 * <p>Generated with web3j version none.
 */
@SuppressWarnings("unchecked")
public class Asset extends Contract {
    public static String BINARY = "60806040523480156200001157600080fd5b506200002b62000031640100000000026401000000009004565b620003c1565b600061100190508073ffffffffffffffffffffffffffffffffffffffff166356004b6a6040518163ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004016200008d906200036b565b602060405180830381600087803b158015620000a857600080fd5b505af1158015620000bd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250620000e39190810190620001a9565b508073ffffffffffffffffffffffffffffffffffffffff166356004b6a6040518163ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040162000139906200031f565b602060405180830381600087803b1580156200015457600080fd5b505af115801562000169573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506200018f9190810190620001a9565b5050565b6000620001a18251620003b7565b905092915050565b600060208284031215620001bc57600080fd5b6000620001cc8482850162000193565b91505092915050565b6000601982527f616363312c20616363322c206d6f6e65792c20737461747573000000000000006020830152604082019050919050565b6000600b82527f61737365745f76616c75650000000000000000000000000000000000000000006020830152604082019050919050565b6000600282527f69640000000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000600d82527f745f7472616e73616374696f6e000000000000000000000000000000000000006020830152604082019050919050565b6000600782527f6163636f756e74000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000600782527f745f6173736574000000000000000000000000000000000000000000000000006020830152604082019050919050565b600060608201905081810360008301526200033a816200027a565b905081810360208301526200034f8162000243565b905081810360408301526200036481620001d5565b9050919050565b600060608201905081810360008301526200038681620002e8565b905081810360208301526200039b81620002b1565b90508181036040830152620003b0816200020c565b9050919050565b6000819050919050565b613c5080620003d16000396000f30060806040526004361061008e576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff1680631de45b10146100935780633d01b3a8146100d0578063a20474fd1461010d578063ab4b8a151461014a578063e29f518214610188578063e2a1a99d146101c5578063e39bca6e14610202578063fcd7e3c114610240575b600080fd5b34801561009f57600080fd5b506100ba60048036036100b5919081019061306e565b61027e565b6040516100c79190613599565b60405180910390f35b3480156100dc57600080fd5b506100f760048036036100f291908101906130ed565b610b3a565b6040516101049190613599565b60405180910390f35b34801561011957600080fd5b50610134600480360361012f91908101906130ed565b610ed2565b6040516101419190613599565b60405180910390f35b34801561015657600080fd5b50610171600480360361016c9190810190612fd9565b611465565b60405161017f929190613562565b60405180910390f35b34801561019457600080fd5b506101af60048036036101aa9190810190612eba565b611aea565b6040516101bc9190613721565b60405180910390f35b3480156101d157600080fd5b506101ec60048036036101e7919081019061301a565b611ce6565b6040516101f99190613599565b60405180910390f35b34801561020e57600080fd5b506102296004803603610224919081019061301a565b612021565b6040516102379291906135b4565b60405180910390f35b34801561024c57600080fd5b5061026760048036036102629190810190612fd9565b6128c1565b6040516102759291906135e4565b60405180910390f35b60008060008060008060008060008097506000965060009550600094506102a48c6128c1565b809750819850505060008714151561031e577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff97507f3a5c0c275bb95165abf2ffef5511a8c0bdd80dedb12a4e92960483b73aaee8a7888d8d8d60405161030e949392919061364b565b60405180910390a1879850610b2b565b6103278b6128c1565b80965081985050506000871415156103a1577ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe97507f3a5c0c275bb95165abf2ffef5511a8c0bdd80dedb12a4e92960483b73aaee8a7888d8d8d604051610391949392919061364b565b60405180910390a1879850610b2b565b89861215610411577ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd97507f3a5c0c275bb95165abf2ffef5511a8c0bdd80dedb12a4e92960483b73aaee8a7888d8d8d604051610401949392919061364b565b60405180910390a1879850610b2b565b848a86011215610483577ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc97507f3a5c0c275bb95165abf2ffef5511a8c0bdd80dedb12a4e92960483b73aaee8a7888d8d8d604051610473949392919061364b565b60405180910390a1879850610b2b565b61048b612c52565b93508373ffffffffffffffffffffffffffffffffffffffff166313db93466040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401602060405180830381600087803b1580156104f157600080fd5b505af1158015610505573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506105299190810190612f5e565b92508273ffffffffffffffffffffffffffffffffffffffff1663e942b5168d6040518263ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004016105809190613927565b600060405180830381600087803b15801561059a57600080fd5b505af11580156105ae573d6000803e3d6000fd5b505050508273ffffffffffffffffffffffffffffffffffffffff16632ef8ba748b88036040518263ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004016106099190613801565b600060405180830381600087803b15801561062357600080fd5b505af1158015610637573d6000803e3d6000fd5b505050508373ffffffffffffffffffffffffffffffffffffffff1663bf2b70a18d858773ffffffffffffffffffffffffffffffffffffffff16637857d7c96040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401602060405180830381600087803b1580156106bd57600080fd5b505af11580156106d1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506106f59190810190612f0c565b6040518463ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040161072f939291906137a3565b602060405180830381600087803b15801561074957600080fd5b505af115801561075d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506107819190810190612fb0565b91506001821415156107f5577ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb97507f3a5c0c275bb95165abf2ffef5511a8c0bdd80dedb12a4e92960483b73aaee8a7888d8d8d6040516107e5949392919061364b565b60405180910390a1879850610b2b565b8373ffffffffffffffffffffffffffffffffffffffff166313db93466040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401602060405180830381600087803b15801561085957600080fd5b505af115801561086d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506108919190810190612f5e565b90508073ffffffffffffffffffffffffffffffffffffffff1663e942b5168c6040518263ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004016108e89190613927565b600060405180830381600087803b15801561090257600080fd5b505af1158015610916573d6000803e3d6000fd5b505050508073ffffffffffffffffffffffffffffffffffffffff16632ef8ba748b87016040518263ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004016109719190613801565b600060405180830381600087803b15801561098b57600080fd5b505af115801561099f573d6000803e3d6000fd5b505050508373ffffffffffffffffffffffffffffffffffffffff1663bf2b70a18c838773ffffffffffffffffffffffffffffffffffffffff16637857d7c96040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401602060405180830381600087803b158015610a2557600080fd5b505af1158015610a39573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610a5d9190810190612f0c565b6040518463ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401610a97939291906137a3565b602060405180830381600087803b158015610ab157600080fd5b505af1158015610ac5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610ae99190810190612fb0565b507f3a5c0c275bb95165abf2ffef5511a8c0bdd80dedb12a4e92960483b73aaee8a7888d8d8d604051610b1f949392919061364b565b60405180910390a18798505b50505050505050509392505050565b60008060008060608060606000955060009450600093506002604051908082528060200260200182016040528015610b815781602001602082028038833980820191505090505b5092506003604051908082528060200260200182016040528015610bb45781602001602082028038833980820191505090505b5091506002604051908082528060200260200182016040528015610bec57816020015b6060815260200190600190039081610bd75790505b509050610bf88b611465565b80945081935050506000826000815181101515610c1157fe5b906020019060200201511415610e5d57610c2a896128c1565b8095508196505050600085141515610ca6577ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb95507f7fb582f9fa6ce8e095b0bf28d0d61a3b104c418ce55e31d8184f2626fb569647868c8c8c8c604051610c9695949392919061369e565b60405180910390a1859650610ec4565b87826002815181101515610cb657fe5b906020019060200201511215610d30577ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe95507f7fb582f9fa6ce8e095b0bf28d0d61a3b104c418ce55e31d8184f2626fb569647868c8c8c8c604051610d2095949392919061369e565b60405180910390a1859650610ec4565b610d3a8b89612021565b8092508196505050600085141515610db6577ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc95507f7fb582f9fa6ce8e095b0bf28d0d61a3b104c418ce55e31d8184f2626fb569647868c8c8c8c604051610da695949392919061369e565b60405180910390a1859650610ec4565b610de28a8a610ddc866001815181101515610dcd57fe5b90602001906020020151611aea565b8b610ed2565b9450600085141515610e58577ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd95507f7fb582f9fa6ce8e095b0bf28d0d61a3b104c418ce55e31d8184f2626fb569647868c8c8c8c604051610e4895949392919061369e565b60405180910390a1859650610ec4565b610e81565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff95505b7f7fb582f9fa6ce8e095b0bf28d0d61a3b104c418ce55e31d8184f2626fb569647868c8c8c8c604051610eb895949392919061369e565b60405180910390a18596505b505050505050949350505050565b60008060006060806000806000809650600095506002604051908082528060200260200182016040528015610f165781602001602082028038833980820191505090505b5094506003604051908082528060200260200182016040528015610f495781602001602082028038833980820191505090505b509350610f558c611465565b80965081955050506000846000815181101515610f6e57fe5b906020019060200201511415156113f057610f87612d0b565b92508273ffffffffffffffffffffffffffffffffffffffff166313db93466040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401602060405180830381600087803b158015610fed57600080fd5b505af1158015611001573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506110259190810190612f5e565b91508173ffffffffffffffffffffffffffffffffffffffff1663e942b5168d6040518263ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040161107c919061382f565b600060405180830381600087803b15801561109657600080fd5b505af11580156110aa573d6000803e3d6000fd5b505050508173ffffffffffffffffffffffffffffffffffffffff1663e942b5168c6040518263ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040161110391906139ea565b600060405180830381600087803b15801561111d57600080fd5b505af1158015611131573d6000803e3d6000fd5b505050508173ffffffffffffffffffffffffffffffffffffffff1663e942b5168b6040518263ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040161118a91906138f2565b600060405180830381600087803b1580156111a457600080fd5b505af11580156111b8573d6000803e3d6000fd5b505050508173ffffffffffffffffffffffffffffffffffffffff16632ef8ba748a6040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401611211919061399c565b600060405180830381600087803b15801561122b57600080fd5b505af115801561123f573d6000803e3d6000fd5b505050508173ffffffffffffffffffffffffffffffffffffffff16632ef8ba748a6040518263ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040161129891906138a4565b600060405180830381600087803b1580156112b257600080fd5b505af11580156112c6573d6000803e3d6000fd5b505050508273ffffffffffffffffffffffffffffffffffffffff166331afac368d846040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401611321929190613773565b602060405180830381600087803b15801561133b57600080fd5b505af115801561134f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506113739190810190612fb0565b905060018114156113c7576113898a8c8b61027e565b95506000861415156113bd577ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd96506113c2565b600096505b6113eb565b7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe96505b611414565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff96505b7f6f7433dcae9c6980545ba89cb4c5ea088268be8603df940d6caa11a3ac888a45878d8d8d8d60405161144b95949392919061369e565b60405180910390a186975050505050505050949350505050565b6060806000806060806000611478612d0b565b94508473ffffffffffffffffffffffffffffffffffffffff1663e8434e39898773ffffffffffffffffffffffffffffffffffffffff16637857d7c96040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401602060405180830381600087803b1580156114fb57600080fd5b505af115801561150f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506115339190810190612f0c565b6040518363ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040161156c929190613743565b602060405180830381600087803b15801561158657600080fd5b505af115801561159a573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506115be9190810190612f35565b935060036040519080825280602002602001820160405280156115f05781602001602082028038833980820191505090505b50925060026040519080825280602002602001820160405280156116235781602001602082028038833980820191505090505b5091508373ffffffffffffffffffffffffffffffffffffffff1663949d225d6040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401602060405180830381600087803b15801561168a57600080fd5b505af115801561169e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506116c29190810190612fb0565b60001415611713577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8360008151811015156116fa57fe5b9060200190602002018181525050828296509650611ae0565b8373ffffffffffffffffffffffffffffffffffffffff1663846719e060006040518263ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004016117699190613706565b602060405180830381600087803b15801561178357600080fd5b505af1158015611797573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506117bb9190810190612f5e565b90508073ffffffffffffffffffffffffffffffffffffffff1663fda69fae6040518163ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004016118109061397c565b602060405180830381600087803b15801561182a57600080fd5b505af115801561183e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506118629190810190612fb0565b83600181518110151561187157fe5b90602001906020020181815250508073ffffffffffffffffffffffffffffffffffffffff1663fda69fae6040518163ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004016118d290613884565b602060405180830381600087803b1580156118ec57600080fd5b505af1158015611900573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506119249190810190612fb0565b83600281518110151561193357fe5b90602001906020020181815250508073ffffffffffffffffffffffffffffffffffffffff166327314f796040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401611994906139ca565b602060405180830381600087803b1580156119ae57600080fd5b505af11580156119c2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506119e69190810190612ee3565b8260008151811015156119f557fe5b9060200190602002019060001916908160001916815250508073ffffffffffffffffffffffffffffffffffffffff166327314f796040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401611a60906138d2565b602060405180830381600087803b158015611a7a57600080fd5b505af1158015611a8e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250611ab29190810190612ee3565b826001815181101515611ac157fe5b9060200190602002019060001916908160001916815250508282965096505b5050505050915091565b6060806000806000606060206040519080825280601f01601f191660200182016040528015611b285781602001602082028038833980820191505090505b50945060009350600092505b6020831015611bf2578260080260020a876001900402600102915060007f010000000000000000000000000000000000000000000000000000000000000002827effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916141515611be557818585815181101515611bac57fe5b9060200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a90535083806001019450505b8280600101935050611b34565b836040519080825280601f01601f191660200182016040528015611c255781602001602082028038833980820191505090505b509050600092505b83831015611cd9578483815181101515611c4357fe5b9060200101517f010000000000000000000000000000000000000000000000000000000000000090047f0100000000000000000000000000000000000000000000000000000000000000028184815181101515611c9c57fe5b9060200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053508280600101935050611c2d565b8095505050505050919050565b60008060008060008060008095506000945060009350611d05896128c1565b8095508196505050600085141515611fb357611d1f612c52565b92508273ffffffffffffffffffffffffffffffffffffffff166313db93466040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401602060405180830381600087803b158015611d8557600080fd5b505af1158015611d99573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250611dbd9190810190612f5e565b91508173ffffffffffffffffffffffffffffffffffffffff1663e942b5168a6040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401611e149190613927565b600060405180830381600087803b158015611e2e57600080fd5b505af1158015611e42573d6000803e3d6000fd5b505050508173ffffffffffffffffffffffffffffffffffffffff16632ef8ba74896040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401611e9b9190613801565b600060405180830381600087803b158015611eb557600080fd5b505af1158015611ec9573d6000803e3d6000fd5b505050508273ffffffffffffffffffffffffffffffffffffffff166331afac368a846040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401611f24929190613773565b602060405180830381600087803b158015611f3e57600080fd5b505af1158015611f52573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250611f769190810190612fb0565b90506001811415611f8a5760009550611fae565b7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe95505b611fd7565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff95505b7fc80814306a567881c5c316a4db1321b1f7c3d59f2c0c3baa0dd2013cdef90f34868a8a60405161200a9392919061360d565b60405180910390a185965050505050505092915050565b60006060600060608060606000806000806000975060026040519080825280602002602001820160405280156120665781602001602082028038833980820191505090505b50965060036040519080825280602002602001820160405280156120995781602001602082028038833980820191505090505b50955060026040519080825280602002602001820160405280156120d157816020015b60608152602001906001900390816120bc5790505b5094506120dd8c611465565b80985081975050506121068760008151811015156120f757fe5b90602001906020020151611aea565b85600081518110151561211557fe5b9060200190602002018190525061214387600181518110151561213457fe5b90602001906020020151611aea565b85600181518110151561215257fe5b90602001906020020181905250600086600081518110151561217057fe5b90602001906020020151141561284c578a86600281518110151561219057fe5b906020019060200201511215612209577ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe97507f93b7fdfdc63f1dfb3aa65f0b61c9e7c9c3628bf8d53cfcf05d7d49a23c7696d7888d8d6040516121f69392919061360d565b60405180910390a18785995099506128b2565b612211612d0b565b93508373ffffffffffffffffffffffffffffffffffffffff166313db93466040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401602060405180830381600087803b15801561227757600080fd5b505af115801561228b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506122af9190810190612f5e565b92508273ffffffffffffffffffffffffffffffffffffffff1663e942b5168d6040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401612306919061382f565b600060405180830381600087803b15801561232057600080fd5b505af1158015612334573d6000803e3d6000fd5b505050508273ffffffffffffffffffffffffffffffffffffffff1663e942b51661237589600081518110151561236657fe5b90602001906020020151611aea565b6040518263ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004016123ad91906139ea565b600060405180830381600087803b1580156123c757600080fd5b505af11580156123db573d6000803e3d6000fd5b505050508273ffffffffffffffffffffffffffffffffffffffff1663e942b51661241c89600181518110151561240d57fe5b90602001906020020151611aea565b6040518263ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040161245491906138f2565b600060405180830381600087803b15801561246e57600080fd5b505af1158015612482573d6000803e3d6000fd5b505050508273ffffffffffffffffffffffffffffffffffffffff16632ef8ba748760018151811015156124b157fe5b906020019060200201516040518263ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004016124f3919061399c565b600060405180830381600087803b15801561250d57600080fd5b505af1158015612521573d6000803e3d6000fd5b505050508273ffffffffffffffffffffffffffffffffffffffff16632ef8ba748c88600281518110151561255157fe5b90602001906020020151036040518263ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040161259491906138a4565b600060405180830381600087803b1580156125ae57600080fd5b505af11580156125c2573d6000803e3d6000fd5b505050508373ffffffffffffffffffffffffffffffffffffffff1663bf2b70a18d858773ffffffffffffffffffffffffffffffffffffffff16637857d7c96040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401602060405180830381600087803b15801561264857600080fd5b505af115801561265c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506126809190810190612f0c565b6040518463ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004016126ba939291906137a3565b602060405180830381600087803b1580156126d457600080fd5b505af11580156126e8573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061270c9190810190612fb0565b9150600182141515612781577ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd97507f93b7fdfdc63f1dfb3aa65f0b61c9e7c9c3628bf8d53cfcf05d7d49a23c7696d7888d8d60405161276e9392919061360d565b60405180910390a18785995099506128b2565b6127cc6127a588600081518110151561279657fe5b90602001906020020151611aea565b6127c68960018151811015156127b757fe5b90602001906020020151611aea565b8d61027e565b905060008114151561284357807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd80197507f93b7fdfdc63f1dfb3aa65f0b61c9e7c9c3628bf8d53cfcf05d7d49a23c7696d7888d8d6040516128309392919061360d565b60405180910390a18785995099506128b2565b60009750612870565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff97505b7f93b7fdfdc63f1dfb3aa65f0b61c9e7c9c3628bf8d53cfcf05d7d49a23c7696d7888d8d6040516128a39392919061360d565b60405180910390a18785995099505b50505050505050509250929050565b6000806000806000806128d2612c52565b93508373ffffffffffffffffffffffffffffffffffffffff1663e8434e39888673ffffffffffffffffffffffffffffffffffffffff16637857d7c96040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401602060405180830381600087803b15801561295557600080fd5b505af1158015612969573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061298d9190810190612f0c565b6040518363ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004016129c6929190613743565b602060405180830381600087803b1580156129e057600080fd5b505af11580156129f4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250612a189190810190612f35565b9250600091508273ffffffffffffffffffffffffffffffffffffffff1663949d225d6040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401602060405180830381600087803b158015612a8257600080fd5b505af1158015612a96573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250612aba9190810190612fb0565b60001415612af0577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8281915095509550612c49565b8273ffffffffffffffffffffffffffffffffffffffff1663846719e060006040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401612b469190613706565b602060405180830381600087803b158015612b6057600080fd5b505af1158015612b74573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250612b989190810190612f5e565b905060008173ffffffffffffffffffffffffffffffffffffffff1663fda69fae6040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401612bef906137e1565b602060405180830381600087803b158015612c0957600080fd5b505af1158015612c1d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250612c419190810190612fb0565b819150955095505b50505050915091565b600080600061100191508173ffffffffffffffffffffffffffffffffffffffff1663f23f63c96040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401612caf9061395c565b602060405180830381600087803b158015612cc957600080fd5b505af1158015612cdd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250612d019190810190612f87565b9050809250505090565b600080600061100191508173ffffffffffffffffffffffffffffffffffffffff1663f23f63c96040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401612d6890613864565b602060405180830381600087803b158015612d8257600080fd5b505af1158015612d96573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250612dba9190810190612f87565b9050809250505090565b6000612dd08235613b31565b905092915050565b6000612de48251613b31565b905092915050565b6000612df88251613b3b565b905092915050565b6000612e0c8251613b4d565b905092915050565b6000612e208251613b5f565b905092915050565b6000612e348251613b71565b905092915050565b6000612e488235613b83565b905092915050565b6000612e5c8251613b83565b905092915050565b600082601f8301121515612e7757600080fd5b8135612e8a612e8582613a4c565b613a1f565b91508082526020830160208301858383011115612ea657600080fd5b612eb1838284613bc3565b50505092915050565b600060208284031215612ecc57600080fd5b6000612eda84828501612dc4565b91505092915050565b600060208284031215612ef557600080fd5b6000612f0384828501612dd8565b91505092915050565b600060208284031215612f1e57600080fd5b6000612f2c84828501612dec565b91505092915050565b600060208284031215612f4757600080fd5b6000612f5584828501612e00565b91505092915050565b600060208284031215612f7057600080fd5b6000612f7e84828501612e14565b91505092915050565b600060208284031215612f9957600080fd5b6000612fa784828501612e28565b91505092915050565b600060208284031215612fc257600080fd5b6000612fd084828501612e50565b91505092915050565b600060208284031215612feb57600080fd5b600082013567ffffffffffffffff81111561300557600080fd5b61301184828501612e64565b91505092915050565b6000806040838503121561302d57600080fd5b600083013567ffffffffffffffff81111561304757600080fd5b61305385828601612e64565b925050602061306485828601612e3c565b9150509250929050565b60008060006060848603121561308357600080fd5b600084013567ffffffffffffffff81111561309d57600080fd5b6130a986828701612e64565b935050602084013567ffffffffffffffff8111156130c657600080fd5b6130d286828701612e64565b92505060406130e386828701612e3c565b9150509250925092565b6000806000806080858703121561310357600080fd5b600085013567ffffffffffffffff81111561311d57600080fd5b61312987828801612e64565b945050602085013567ffffffffffffffff81111561314657600080fd5b61315287828801612e64565b935050604085013567ffffffffffffffff81111561316f57600080fd5b61317b87828801612e64565b925050606061318c87828801612e3c565b91505092959194509250565b60006131a382613a9f565b8084526020840193506131b583613a78565b60005b828110156131e7576131cb8683516132bc565b6131d482613ad6565b91506020860195506001810190506131b8565b50849250505092915050565b60006131fe82613aaa565b80845260208401935061321083613a85565b60005b82811015613242576132268683516132e9565b61322f82613ae3565b9150602086019550600181019050613213565b50849250505092915050565b600061325982613ab5565b8084526020840193508360208202850161327285613a92565b60005b848110156132ab57838303885261328d83835161333d565b925061329882613af0565b9150602088019750600181019050613275565b508196508694505050505092915050565b6132c581613b1d565b82525050565b6132d481613b8d565b82525050565b6132e381613b9f565b82525050565b6132f281613b27565b82525050565b61330181613bb1565b82525050565b600061331282613acb565b808452613326816020860160208601613bd2565b61332f81613c05565b602085010191505092915050565b600061334882613ac0565b80845261335c816020860160208601613bd2565b61336581613c05565b602085010191505092915050565b6000600b82527f61737365745f76616c75650000000000000000000000000000000000000000006020830152604082019050919050565b6000600282527f69640000000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000600d82527f745f7472616e73616374696f6e000000000000000000000000000000000000006020830152604082019050919050565b6000600682527f73746174757300000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000600482527f61636332000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000600782527f6163636f756e74000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000600782527f745f6173736574000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000600582527f6d6f6e65790000000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000600482527f61636331000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000604082019050818103600083015261357c81856131f3565b905081810360208301526135908184613198565b90509392505050565b60006020820190506135ae60008301846132e9565b92915050565b60006040820190506135c960008301856132e9565b81810360208301526135db818461324e565b90509392505050565b60006040820190506135f960008301856132e9565b61360660208301846132e9565b9392505050565b600060608201905061362260008301866132e9565b81810360208301526136348185613307565b905061364360408301846132e9565b949350505050565b600060808201905061366060008301876132e9565b81810360208301526136728186613307565b905081810360408301526136868185613307565b905061369560608301846132e9565b95945050505050565b600060a0820190506136b360008301886132e9565b81810360208301526136c58187613307565b905081810360408301526136d98186613307565b905081810360608301526136ed8185613307565b90506136fc60808301846132e9565b9695505050505050565b600060208201905061371b60008301846132f8565b92915050565b6000602082019050818103600083015261373b8184613307565b905092915050565b6000604082019050818103600083015261375d8185613307565b905061376c60208301846132cb565b9392505050565b6000604082019050818103600083015261378d8185613307565b905061379c60208301846132da565b9392505050565b600060608201905081810360008301526137bd8186613307565b90506137cc60208301856132da565b6137d960408301846132cb565b949350505050565b600060208201905081810360008301526137fa81613373565b9050919050565b6000604082019050818103600083015261381a81613373565b905061382960208301846132e9565b92915050565b60006040820190508181036000830152613848816133aa565b9050818103602083015261385c8184613307565b905092915050565b6000602082019050818103600083015261387d816133e1565b9050919050565b6000602082019050818103600083015261389d81613418565b9050919050565b600060408201905081810360008301526138bd81613418565b90506138cc60208301846132e9565b92915050565b600060208201905081810360008301526138eb8161344f565b9050919050565b6000604082019050818103600083015261390b8161344f565b9050818103602083015261391f8184613307565b905092915050565b6000604082019050818103600083015261394081613486565b905081810360208301526139548184613307565b905092915050565b60006020820190508181036000830152613975816134bd565b9050919050565b60006020820190508181036000830152613995816134f4565b9050919050565b600060408201905081810360008301526139b5816134f4565b90506139c460208301846132e9565b92915050565b600060208201905081810360008301526139e38161352b565b9050919050565b60006040820190508181036000830152613a038161352b565b90508181036020830152613a178184613307565b905092915050565b6000604051905081810181811067ffffffffffffffff82111715613a4257600080fd5b8060405250919050565b600067ffffffffffffffff821115613a6357600080fd5b601f19601f8301169050602081019050919050565b6000602082019050919050565b6000602082019050919050565b6000602082019050919050565b600081519050919050565b600081519050919050565b600081519050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b6000602082019050919050565b6000602082019050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b6000819050919050565b6000819050919050565b6000613b4682613afd565b9050919050565b6000613b5882613afd565b9050919050565b6000613b6a82613afd565b9050919050565b6000613b7c82613afd565b9050919050565b6000819050919050565b6000613b9882613afd565b9050919050565b6000613baa82613afd565b9050919050565b6000613bbc82613b27565b9050919050565b82818337600083830152505050565b60005b83811015613bf0578082015181840152602081019050613bd5565b83811115613bff576000848401525b50505050565b6000601f19601f83011690509190505600a265627a7a7230582045ad6a15a878652a96e642f9026a6c39e121f3694f7a2d4bebbc816df7c09fc26c6578706572696d656e74616cf50037";

    public static final String ABI = "[{\"constant\":false,\"inputs\":[{\"name\":\"from_account\",\"type\":\"string\"},{\"name\":\"to_account\",\"type\":\"string\"},{\"name\":\"amount\",\"type\":\"int256\"}],\"name\":\"transfer\",\"outputs\":[{\"name\":\"\",\"type\":\"int256\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"old_id\",\"type\":\"string\"},{\"name\":\"new_id\",\"type\":\"string\"},{\"name\":\"acc\",\"type\":\"string\"},{\"name\":\"money\",\"type\":\"int256\"}],\"name\":\"splitTransaction\",\"outputs\":[{\"name\":\"\",\"type\":\"int256\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"id\",\"type\":\"string\"},{\"name\":\"acc1\",\"type\":\"string\"},{\"name\":\"acc2\",\"type\":\"string\"},{\"name\":\"money\",\"type\":\"int256\"}],\"name\":\"addTransaction\",\"outputs\":[{\"name\":\"\",\"type\":\"int256\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"id\",\"type\":\"string\"}],\"name\":\"select_transaction\",\"outputs\":[{\"name\":\"\",\"type\":\"int256[]\"},{\"name\":\"\",\"type\":\"bytes32[]\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"x\",\"type\":\"bytes32\"}],\"name\":\"byte32ToString\",\"outputs\":[{\"name\":\"\",\"type\":\"string\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"account\",\"type\":\"string\"},{\"name\":\"asset_value\",\"type\":\"int256\"}],\"name\":\"register\",\"outputs\":[{\"name\":\"\",\"type\":\"int256\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"id\",\"type\":\"string\"},{\"name\":\"money\",\"type\":\"int256\"}],\"name\":\"updateTransaction\",\"outputs\":[{\"name\":\"\",\"type\":\"int256\"},{\"name\":\"\",\"type\":\"string[]\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"account\",\"type\":\"string\"}],\"name\":\"select\",\"outputs\":[{\"name\":\"\",\"type\":\"int256\"},{\"name\":\"\",\"type\":\"int256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"name\":\"ret\",\"type\":\"int256\"},{\"indexed\":false,\"name\":\"account\",\"type\":\"string\"},{\"indexed\":false,\"name\":\"asset_value\",\"type\":\"int256\"}],\"name\":\"RegisterEvent\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"name\":\"ret\",\"type\":\"int256\"},{\"indexed\":false,\"name\":\"from_account\",\"type\":\"string\"},{\"indexed\":false,\"name\":\"to_account\",\"type\":\"string\"},{\"indexed\":false,\"name\":\"amount\",\"type\":\"int256\"}],\"name\":\"TransferEvent\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"name\":\"ret\",\"type\":\"int256\"},{\"indexed\":false,\"name\":\"id\",\"type\":\"string\"},{\"indexed\":false,\"name\":\"acc1\",\"type\":\"string\"},{\"indexed\":false,\"name\":\"acc2\",\"type\":\"string\"},{\"indexed\":false,\"name\":\"money\",\"type\":\"int256\"}],\"name\":\"AddTransactionEvent\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"name\":\"ret\",\"type\":\"int256\"},{\"indexed\":false,\"name\":\"id\",\"type\":\"string\"},{\"indexed\":false,\"name\":\"money\",\"type\":\"int256\"}],\"name\":\"UpdateTransactionEvent\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"name\":\"ret\",\"type\":\"int256\"},{\"indexed\":false,\"name\":\"old_id\",\"type\":\"string\"},{\"indexed\":false,\"name\":\"new_id\",\"type\":\"string\"},{\"indexed\":false,\"name\":\"acc\",\"type\":\"string\"},{\"indexed\":false,\"name\":\"money\",\"type\":\"int256\"}],\"name\":\"SplitTransactionEvent\",\"type\":\"event\"}]";

    public static final TransactionDecoder transactionDecoder = new TransactionDecoder(ABI, BINARY);

    public static final String FUNC_TRANSFER = "transfer";

    public static final String FUNC_SPLITTRANSACTION = "splitTransaction";

    public static final String FUNC_ADDTRANSACTION = "addTransaction";

    public static final String FUNC_SELECT_TRANSACTION = "select_transaction";

    public static final String FUNC_BYTE32TOSTRING = "byte32ToString";

    public static final String FUNC_REGISTER = "register";

    public static final String FUNC_UPDATETRANSACTION = "updateTransaction";

    public static final String FUNC_SELECT = "select";

    public static final Event REGISTEREVENT_EVENT = new Event("RegisterEvent", 
            Arrays.<TypeReference<?>>asList(new TypeReference<Int256>() {}, new TypeReference<Utf8String>() {}, new TypeReference<Int256>() {}));
    ;

    public static final Event TRANSFEREVENT_EVENT = new Event("TransferEvent", 
            Arrays.<TypeReference<?>>asList(new TypeReference<Int256>() {}, new TypeReference<Utf8String>() {}, new TypeReference<Utf8String>() {}, new TypeReference<Int256>() {}));
    ;

    public static final Event ADDTRANSACTIONEVENT_EVENT = new Event("AddTransactionEvent", 
            Arrays.<TypeReference<?>>asList(new TypeReference<Int256>() {}, new TypeReference<Utf8String>() {}, new TypeReference<Utf8String>() {}, new TypeReference<Utf8String>() {}, new TypeReference<Int256>() {}));
    ;

    public static final Event UPDATETRANSACTIONEVENT_EVENT = new Event("UpdateTransactionEvent", 
            Arrays.<TypeReference<?>>asList(new TypeReference<Int256>() {}, new TypeReference<Utf8String>() {}, new TypeReference<Int256>() {}));
    ;

    public static final Event SPLITTRANSACTIONEVENT_EVENT = new Event("SplitTransactionEvent", 
            Arrays.<TypeReference<?>>asList(new TypeReference<Int256>() {}, new TypeReference<Utf8String>() {}, new TypeReference<Utf8String>() {}, new TypeReference<Utf8String>() {}, new TypeReference<Int256>() {}));
    ;

    @Deprecated
    protected Asset(String contractAddress, Web3j web3j, Credentials credentials, BigInteger gasPrice, BigInteger gasLimit) {
        super(BINARY, contractAddress, web3j, credentials, gasPrice, gasLimit);
    }

    protected Asset(String contractAddress, Web3j web3j, Credentials credentials, ContractGasProvider contractGasProvider) {
        super(BINARY, contractAddress, web3j, credentials, contractGasProvider);
    }

    @Deprecated
    protected Asset(String contractAddress, Web3j web3j, TransactionManager transactionManager, BigInteger gasPrice, BigInteger gasLimit) {
        super(BINARY, contractAddress, web3j, transactionManager, gasPrice, gasLimit);
    }

    protected Asset(String contractAddress, Web3j web3j, TransactionManager transactionManager, ContractGasProvider contractGasProvider) {
        super(BINARY, contractAddress, web3j, transactionManager, contractGasProvider);
    }

    public static TransactionDecoder getTransactionDecoder() {
        return transactionDecoder;
    }

    public RemoteCall<TransactionReceipt> transfer(String from_account, String to_account, BigInteger amount) {
        final Function function = new Function(
                FUNC_TRANSFER, 
                Arrays.<Type>asList(new org.fisco.bcos.web3j.abi.datatypes.Utf8String(from_account), 
                new org.fisco.bcos.web3j.abi.datatypes.Utf8String(to_account), 
                new org.fisco.bcos.web3j.abi.datatypes.generated.Int256(amount)), 
                Collections.<TypeReference<?>>emptyList());
        return executeRemoteCallTransaction(function);
    }

    public void transfer(String from_account, String to_account, BigInteger amount, TransactionSucCallback callback) {
        final Function function = new Function(
                FUNC_TRANSFER, 
                Arrays.<Type>asList(new org.fisco.bcos.web3j.abi.datatypes.Utf8String(from_account), 
                new org.fisco.bcos.web3j.abi.datatypes.Utf8String(to_account), 
                new org.fisco.bcos.web3j.abi.datatypes.generated.Int256(amount)), 
                Collections.<TypeReference<?>>emptyList());
        asyncExecuteTransaction(function, callback);
    }

    public String transferSeq(String from_account, String to_account, BigInteger amount) {
        final Function function = new Function(
                FUNC_TRANSFER, 
                Arrays.<Type>asList(new org.fisco.bcos.web3j.abi.datatypes.Utf8String(from_account), 
                new org.fisco.bcos.web3j.abi.datatypes.Utf8String(to_account), 
                new org.fisco.bcos.web3j.abi.datatypes.generated.Int256(amount)), 
                Collections.<TypeReference<?>>emptyList());
        return createTransactionSeq(function);
    }

    public Tuple3<String, String, BigInteger> getTransferInput(TransactionReceipt transactionReceipt) {
        String data = transactionReceipt.getInput().substring(10);
        final Function function = new Function(FUNC_TRANSFER, 
                Arrays.<Type>asList(), 
                Arrays.<TypeReference<?>>asList(new TypeReference<Utf8String>() {}, new TypeReference<Utf8String>() {}, new TypeReference<Int256>() {}));
        List<Type> results = FunctionReturnDecoder.decode(data, function.getOutputParameters());;
        return new Tuple3<String, String, BigInteger>(

                (String) results.get(0).getValue(), 
                (String) results.get(1).getValue(), 
                (BigInteger) results.get(2).getValue()
                );
    }

    public Tuple1<BigInteger> getTransferOutput(TransactionReceipt transactionReceipt) {
        String data = transactionReceipt.getOutput();
        final Function function = new Function(FUNC_TRANSFER, 
                Arrays.<Type>asList(), 
                Arrays.<TypeReference<?>>asList(new TypeReference<Int256>() {}));
        List<Type> results = FunctionReturnDecoder.decode(data, function.getOutputParameters());;
        return new Tuple1<BigInteger>(

                (BigInteger) results.get(0).getValue()
                );
    }

    public RemoteCall<TransactionReceipt> splitTransaction(String old_id, String new_id, String acc, BigInteger money) {
        final Function function = new Function(
                FUNC_SPLITTRANSACTION, 
                Arrays.<Type>asList(new org.fisco.bcos.web3j.abi.datatypes.Utf8String(old_id), 
                new org.fisco.bcos.web3j.abi.datatypes.Utf8String(new_id), 
                new org.fisco.bcos.web3j.abi.datatypes.Utf8String(acc), 
                new org.fisco.bcos.web3j.abi.datatypes.generated.Int256(money)), 
                Collections.<TypeReference<?>>emptyList());
        return executeRemoteCallTransaction(function);
    }

    public void splitTransaction(String old_id, String new_id, String acc, BigInteger money, TransactionSucCallback callback) {
        final Function function = new Function(
                FUNC_SPLITTRANSACTION, 
                Arrays.<Type>asList(new org.fisco.bcos.web3j.abi.datatypes.Utf8String(old_id), 
                new org.fisco.bcos.web3j.abi.datatypes.Utf8String(new_id), 
                new org.fisco.bcos.web3j.abi.datatypes.Utf8String(acc), 
                new org.fisco.bcos.web3j.abi.datatypes.generated.Int256(money)), 
                Collections.<TypeReference<?>>emptyList());
        asyncExecuteTransaction(function, callback);
    }

    public String splitTransactionSeq(String old_id, String new_id, String acc, BigInteger money) {
        final Function function = new Function(
                FUNC_SPLITTRANSACTION, 
                Arrays.<Type>asList(new org.fisco.bcos.web3j.abi.datatypes.Utf8String(old_id), 
                new org.fisco.bcos.web3j.abi.datatypes.Utf8String(new_id), 
                new org.fisco.bcos.web3j.abi.datatypes.Utf8String(acc), 
                new org.fisco.bcos.web3j.abi.datatypes.generated.Int256(money)), 
                Collections.<TypeReference<?>>emptyList());
        return createTransactionSeq(function);
    }

    public Tuple4<String, String, String, BigInteger> getSplitTransactionInput(TransactionReceipt transactionReceipt) {
        String data = transactionReceipt.getInput().substring(10);
        final Function function = new Function(FUNC_SPLITTRANSACTION, 
                Arrays.<Type>asList(), 
                Arrays.<TypeReference<?>>asList(new TypeReference<Utf8String>() {}, new TypeReference<Utf8String>() {}, new TypeReference<Utf8String>() {}, new TypeReference<Int256>() {}));
        List<Type> results = FunctionReturnDecoder.decode(data, function.getOutputParameters());;
        return new Tuple4<String, String, String, BigInteger>(

                (String) results.get(0).getValue(), 
                (String) results.get(1).getValue(), 
                (String) results.get(2).getValue(), 
                (BigInteger) results.get(3).getValue()
                );
    }

    public Tuple1<BigInteger> getSplitTransactionOutput(TransactionReceipt transactionReceipt) {
        String data = transactionReceipt.getOutput();
        final Function function = new Function(FUNC_SPLITTRANSACTION, 
                Arrays.<Type>asList(), 
                Arrays.<TypeReference<?>>asList(new TypeReference<Int256>() {}));
        List<Type> results = FunctionReturnDecoder.decode(data, function.getOutputParameters());;
        return new Tuple1<BigInteger>(

                (BigInteger) results.get(0).getValue()
                );
    }

    public RemoteCall<TransactionReceipt> addTransaction(String id, String acc1, String acc2, BigInteger money) {
        final Function function = new Function(
                FUNC_ADDTRANSACTION, 
                Arrays.<Type>asList(new org.fisco.bcos.web3j.abi.datatypes.Utf8String(id), 
                new org.fisco.bcos.web3j.abi.datatypes.Utf8String(acc1), 
                new org.fisco.bcos.web3j.abi.datatypes.Utf8String(acc2), 
                new org.fisco.bcos.web3j.abi.datatypes.generated.Int256(money)), 
                Collections.<TypeReference<?>>emptyList());
        return executeRemoteCallTransaction(function);
    }

    public void addTransaction(String id, String acc1, String acc2, BigInteger money, TransactionSucCallback callback) {
        final Function function = new Function(
                FUNC_ADDTRANSACTION, 
                Arrays.<Type>asList(new org.fisco.bcos.web3j.abi.datatypes.Utf8String(id), 
                new org.fisco.bcos.web3j.abi.datatypes.Utf8String(acc1), 
                new org.fisco.bcos.web3j.abi.datatypes.Utf8String(acc2), 
                new org.fisco.bcos.web3j.abi.datatypes.generated.Int256(money)), 
                Collections.<TypeReference<?>>emptyList());
        asyncExecuteTransaction(function, callback);
    }

    public String addTransactionSeq(String id, String acc1, String acc2, BigInteger money) {
        final Function function = new Function(
                FUNC_ADDTRANSACTION, 
                Arrays.<Type>asList(new org.fisco.bcos.web3j.abi.datatypes.Utf8String(id), 
                new org.fisco.bcos.web3j.abi.datatypes.Utf8String(acc1), 
                new org.fisco.bcos.web3j.abi.datatypes.Utf8String(acc2), 
                new org.fisco.bcos.web3j.abi.datatypes.generated.Int256(money)), 
                Collections.<TypeReference<?>>emptyList());
        return createTransactionSeq(function);
    }

    public Tuple4<String, String, String, BigInteger> getAddTransactionInput(TransactionReceipt transactionReceipt) {
        String data = transactionReceipt.getInput().substring(10);
        final Function function = new Function(FUNC_ADDTRANSACTION, 
                Arrays.<Type>asList(), 
                Arrays.<TypeReference<?>>asList(new TypeReference<Utf8String>() {}, new TypeReference<Utf8String>() {}, new TypeReference<Utf8String>() {}, new TypeReference<Int256>() {}));
        List<Type> results = FunctionReturnDecoder.decode(data, function.getOutputParameters());;
        return new Tuple4<String, String, String, BigInteger>(

                (String) results.get(0).getValue(), 
                (String) results.get(1).getValue(), 
                (String) results.get(2).getValue(), 
                (BigInteger) results.get(3).getValue()
                );
    }

    public Tuple1<BigInteger> getAddTransactionOutput(TransactionReceipt transactionReceipt) {
        String data = transactionReceipt.getOutput();
        final Function function = new Function(FUNC_ADDTRANSACTION, 
                Arrays.<Type>asList(), 
                Arrays.<TypeReference<?>>asList(new TypeReference<Int256>() {}));
        List<Type> results = FunctionReturnDecoder.decode(data, function.getOutputParameters());;
        return new Tuple1<BigInteger>(

                (BigInteger) results.get(0).getValue()
                );
    }

    public RemoteCall<Tuple2<List<BigInteger>, List<byte[]>>> select_transaction(String id) {
        final Function function = new Function(FUNC_SELECT_TRANSACTION, 
                Arrays.<Type>asList(new org.fisco.bcos.web3j.abi.datatypes.Utf8String(id)), 
                Arrays.<TypeReference<?>>asList(new TypeReference<DynamicArray<Int256>>() {}, new TypeReference<DynamicArray<Bytes32>>() {}));
        return new RemoteCall<Tuple2<List<BigInteger>, List<byte[]>>>(
                new Callable<Tuple2<List<BigInteger>, List<byte[]>>>() {
                    @Override
                    public Tuple2<List<BigInteger>, List<byte[]>> call() throws Exception {
                        List<Type> results = executeCallMultipleValueReturn(function);
                        return new Tuple2<List<BigInteger>, List<byte[]>>(
                                convertToNative((List<Int256>) results.get(0).getValue()), 
                                convertToNative((List<Bytes32>) results.get(1).getValue()));
                    }
                });
    }

    public RemoteCall<String> byte32ToString(byte[] x) {
        final Function function = new Function(FUNC_BYTE32TOSTRING, 
                Arrays.<Type>asList(new org.fisco.bcos.web3j.abi.datatypes.generated.Bytes32(x)), 
                Arrays.<TypeReference<?>>asList(new TypeReference<Utf8String>() {}));
        return executeRemoteCallSingleValueReturn(function, String.class);
    }

    public RemoteCall<TransactionReceipt> register(String account, BigInteger asset_value) {
        final Function function = new Function(
                FUNC_REGISTER, 
                Arrays.<Type>asList(new org.fisco.bcos.web3j.abi.datatypes.Utf8String(account), 
                new org.fisco.bcos.web3j.abi.datatypes.generated.Int256(asset_value)), 
                Collections.<TypeReference<?>>emptyList());
        return executeRemoteCallTransaction(function);
    }

    public void register(String account, BigInteger asset_value, TransactionSucCallback callback) {
        final Function function = new Function(
                FUNC_REGISTER, 
                Arrays.<Type>asList(new org.fisco.bcos.web3j.abi.datatypes.Utf8String(account), 
                new org.fisco.bcos.web3j.abi.datatypes.generated.Int256(asset_value)), 
                Collections.<TypeReference<?>>emptyList());
        asyncExecuteTransaction(function, callback);
    }

    public String registerSeq(String account, BigInteger asset_value) {
        final Function function = new Function(
                FUNC_REGISTER, 
                Arrays.<Type>asList(new org.fisco.bcos.web3j.abi.datatypes.Utf8String(account), 
                new org.fisco.bcos.web3j.abi.datatypes.generated.Int256(asset_value)), 
                Collections.<TypeReference<?>>emptyList());
        return createTransactionSeq(function);
    }

    public Tuple2<String, BigInteger> getRegisterInput(TransactionReceipt transactionReceipt) {
        String data = transactionReceipt.getInput().substring(10);
        final Function function = new Function(FUNC_REGISTER, 
                Arrays.<Type>asList(), 
                Arrays.<TypeReference<?>>asList(new TypeReference<Utf8String>() {}, new TypeReference<Int256>() {}));
        List<Type> results = FunctionReturnDecoder.decode(data, function.getOutputParameters());;
        return new Tuple2<String, BigInteger>(

                (String) results.get(0).getValue(), 
                (BigInteger) results.get(1).getValue()
                );
    }

    public Tuple1<BigInteger> getRegisterOutput(TransactionReceipt transactionReceipt) {
        String data = transactionReceipt.getOutput();
        final Function function = new Function(FUNC_REGISTER, 
                Arrays.<Type>asList(), 
                Arrays.<TypeReference<?>>asList(new TypeReference<Int256>() {}));
        List<Type> results = FunctionReturnDecoder.decode(data, function.getOutputParameters());;
        return new Tuple1<BigInteger>(

                (BigInteger) results.get(0).getValue()
                );
    }

    public RemoteCall<TransactionReceipt> updateTransaction(String id, BigInteger money) {
        final Function function = new Function(
                FUNC_UPDATETRANSACTION, 
                Arrays.<Type>asList(new org.fisco.bcos.web3j.abi.datatypes.Utf8String(id), 
                new org.fisco.bcos.web3j.abi.datatypes.generated.Int256(money)), 
                Collections.<TypeReference<?>>emptyList());
        return executeRemoteCallTransaction(function);
    }

    public void updateTransaction(String id, BigInteger money, TransactionSucCallback callback) {
        final Function function = new Function(
                FUNC_UPDATETRANSACTION, 
                Arrays.<Type>asList(new org.fisco.bcos.web3j.abi.datatypes.Utf8String(id), 
                new org.fisco.bcos.web3j.abi.datatypes.generated.Int256(money)), 
                Collections.<TypeReference<?>>emptyList());
        asyncExecuteTransaction(function, callback);
    }

    public String updateTransactionSeq(String id, BigInteger money) {
        final Function function = new Function(
                FUNC_UPDATETRANSACTION, 
                Arrays.<Type>asList(new org.fisco.bcos.web3j.abi.datatypes.Utf8String(id), 
                new org.fisco.bcos.web3j.abi.datatypes.generated.Int256(money)), 
                Collections.<TypeReference<?>>emptyList());
        return createTransactionSeq(function);
    }

    public Tuple2<String, BigInteger> getUpdateTransactionInput(TransactionReceipt transactionReceipt) {
        String data = transactionReceipt.getInput().substring(10);
        final Function function = new Function(FUNC_UPDATETRANSACTION, 
                Arrays.<Type>asList(), 
                Arrays.<TypeReference<?>>asList(new TypeReference<Utf8String>() {}, new TypeReference<Int256>() {}));
        List<Type> results = FunctionReturnDecoder.decode(data, function.getOutputParameters());;
        return new Tuple2<String, BigInteger>(

                (String) results.get(0).getValue(), 
                (BigInteger) results.get(1).getValue()
                );
    }

    public Tuple2<BigInteger, List<String>> getUpdateTransactionOutput(TransactionReceipt transactionReceipt) {
        String data = transactionReceipt.getOutput();
        final Function function = new Function(FUNC_UPDATETRANSACTION, 
                Arrays.<Type>asList(), 
                Arrays.<TypeReference<?>>asList(new TypeReference<Int256>() {}, new TypeReference<DynamicArray<Utf8String>>() {}));
        List<Type> results = FunctionReturnDecoder.decode(data, function.getOutputParameters());;
        return new Tuple2<BigInteger, List<String>>(

                (BigInteger) results.get(0).getValue(), 
                convertToNative((List<Utf8String>) results.get(1).getValue())
                );
    }

    public RemoteCall<Tuple2<BigInteger, BigInteger>> select(String account) {
        final Function function = new Function(FUNC_SELECT, 
                Arrays.<Type>asList(new org.fisco.bcos.web3j.abi.datatypes.Utf8String(account)), 
                Arrays.<TypeReference<?>>asList(new TypeReference<Int256>() {}, new TypeReference<Int256>() {}));
        return new RemoteCall<Tuple2<BigInteger, BigInteger>>(
                new Callable<Tuple2<BigInteger, BigInteger>>() {
                    @Override
                    public Tuple2<BigInteger, BigInteger> call() throws Exception {
                        List<Type> results = executeCallMultipleValueReturn(function);
                        return new Tuple2<BigInteger, BigInteger>(
                                (BigInteger) results.get(0).getValue(), 
                                (BigInteger) results.get(1).getValue());
                    }
                });
    }

    public List<RegisterEventEventResponse> getRegisterEventEvents(TransactionReceipt transactionReceipt) {
        List<Contract.EventValuesWithLog> valueList = extractEventParametersWithLog(REGISTEREVENT_EVENT, transactionReceipt);
        ArrayList<RegisterEventEventResponse> responses = new ArrayList<RegisterEventEventResponse>(valueList.size());
        for (Contract.EventValuesWithLog eventValues : valueList) {
            RegisterEventEventResponse typedResponse = new RegisterEventEventResponse();
            typedResponse.log = eventValues.getLog();
            typedResponse.ret = (BigInteger) eventValues.getNonIndexedValues().get(0).getValue();
            typedResponse.account = (String) eventValues.getNonIndexedValues().get(1).getValue();
            typedResponse.asset_value = (BigInteger) eventValues.getNonIndexedValues().get(2).getValue();
            responses.add(typedResponse);
        }
        return responses;
    }

    public void registerRegisterEventEventLogFilter(String fromBlock, String toBlock, List<String> otherTopcs, EventLogPushWithDecodeCallback callback) {
        String topic0 = EventEncoder.encode(REGISTEREVENT_EVENT);
        registerEventLogPushFilter(ABI,BINARY,topic0,fromBlock,toBlock,otherTopcs,callback);
    }

    public void registerRegisterEventEventLogFilter(EventLogPushWithDecodeCallback callback) {
        String topic0 = EventEncoder.encode(REGISTEREVENT_EVENT);
        registerEventLogPushFilter(ABI,BINARY,topic0,callback);
    }

    public List<TransferEventEventResponse> getTransferEventEvents(TransactionReceipt transactionReceipt) {
        List<Contract.EventValuesWithLog> valueList = extractEventParametersWithLog(TRANSFEREVENT_EVENT, transactionReceipt);
        ArrayList<TransferEventEventResponse> responses = new ArrayList<TransferEventEventResponse>(valueList.size());
        for (Contract.EventValuesWithLog eventValues : valueList) {
            TransferEventEventResponse typedResponse = new TransferEventEventResponse();
            typedResponse.log = eventValues.getLog();
            typedResponse.ret = (BigInteger) eventValues.getNonIndexedValues().get(0).getValue();
            typedResponse.from_account = (String) eventValues.getNonIndexedValues().get(1).getValue();
            typedResponse.to_account = (String) eventValues.getNonIndexedValues().get(2).getValue();
            typedResponse.amount = (BigInteger) eventValues.getNonIndexedValues().get(3).getValue();
            responses.add(typedResponse);
        }
        return responses;
    }

    public void registerTransferEventEventLogFilter(String fromBlock, String toBlock, List<String> otherTopcs, EventLogPushWithDecodeCallback callback) {
        String topic0 = EventEncoder.encode(TRANSFEREVENT_EVENT);
        registerEventLogPushFilter(ABI,BINARY,topic0,fromBlock,toBlock,otherTopcs,callback);
    }

    public void registerTransferEventEventLogFilter(EventLogPushWithDecodeCallback callback) {
        String topic0 = EventEncoder.encode(TRANSFEREVENT_EVENT);
        registerEventLogPushFilter(ABI,BINARY,topic0,callback);
    }

    public List<AddTransactionEventEventResponse> getAddTransactionEventEvents(TransactionReceipt transactionReceipt) {
        List<Contract.EventValuesWithLog> valueList = extractEventParametersWithLog(ADDTRANSACTIONEVENT_EVENT, transactionReceipt);
        ArrayList<AddTransactionEventEventResponse> responses = new ArrayList<AddTransactionEventEventResponse>(valueList.size());
        for (Contract.EventValuesWithLog eventValues : valueList) {
            AddTransactionEventEventResponse typedResponse = new AddTransactionEventEventResponse();
            typedResponse.log = eventValues.getLog();
            typedResponse.ret = (BigInteger) eventValues.getNonIndexedValues().get(0).getValue();
            typedResponse.id = (String) eventValues.getNonIndexedValues().get(1).getValue();
            typedResponse.acc1 = (String) eventValues.getNonIndexedValues().get(2).getValue();
            typedResponse.acc2 = (String) eventValues.getNonIndexedValues().get(3).getValue();
            typedResponse.money = (BigInteger) eventValues.getNonIndexedValues().get(4).getValue();
            responses.add(typedResponse);
        }
        return responses;
    }

    public void registerAddTransactionEventEventLogFilter(String fromBlock, String toBlock, List<String> otherTopcs, EventLogPushWithDecodeCallback callback) {
        String topic0 = EventEncoder.encode(ADDTRANSACTIONEVENT_EVENT);
        registerEventLogPushFilter(ABI,BINARY,topic0,fromBlock,toBlock,otherTopcs,callback);
    }

    public void registerAddTransactionEventEventLogFilter(EventLogPushWithDecodeCallback callback) {
        String topic0 = EventEncoder.encode(ADDTRANSACTIONEVENT_EVENT);
        registerEventLogPushFilter(ABI,BINARY,topic0,callback);
    }

    public List<UpdateTransactionEventEventResponse> getUpdateTransactionEventEvents(TransactionReceipt transactionReceipt) {
        List<Contract.EventValuesWithLog> valueList = extractEventParametersWithLog(UPDATETRANSACTIONEVENT_EVENT, transactionReceipt);
        ArrayList<UpdateTransactionEventEventResponse> responses = new ArrayList<UpdateTransactionEventEventResponse>(valueList.size());
        for (Contract.EventValuesWithLog eventValues : valueList) {
            UpdateTransactionEventEventResponse typedResponse = new UpdateTransactionEventEventResponse();
            typedResponse.log = eventValues.getLog();
            typedResponse.ret = (BigInteger) eventValues.getNonIndexedValues().get(0).getValue();
            typedResponse.id = (String) eventValues.getNonIndexedValues().get(1).getValue();
            typedResponse.money = (BigInteger) eventValues.getNonIndexedValues().get(2).getValue();
            responses.add(typedResponse);
        }
        return responses;
    }

    public void registerUpdateTransactionEventEventLogFilter(String fromBlock, String toBlock, List<String> otherTopcs, EventLogPushWithDecodeCallback callback) {
        String topic0 = EventEncoder.encode(UPDATETRANSACTIONEVENT_EVENT);
        registerEventLogPushFilter(ABI,BINARY,topic0,fromBlock,toBlock,otherTopcs,callback);
    }

    public void registerUpdateTransactionEventEventLogFilter(EventLogPushWithDecodeCallback callback) {
        String topic0 = EventEncoder.encode(UPDATETRANSACTIONEVENT_EVENT);
        registerEventLogPushFilter(ABI,BINARY,topic0,callback);
    }

    public List<SplitTransactionEventEventResponse> getSplitTransactionEventEvents(TransactionReceipt transactionReceipt) {
        List<Contract.EventValuesWithLog> valueList = extractEventParametersWithLog(SPLITTRANSACTIONEVENT_EVENT, transactionReceipt);
        ArrayList<SplitTransactionEventEventResponse> responses = new ArrayList<SplitTransactionEventEventResponse>(valueList.size());
        for (Contract.EventValuesWithLog eventValues : valueList) {
            SplitTransactionEventEventResponse typedResponse = new SplitTransactionEventEventResponse();
            typedResponse.log = eventValues.getLog();
            typedResponse.ret = (BigInteger) eventValues.getNonIndexedValues().get(0).getValue();
            typedResponse.old_id = (String) eventValues.getNonIndexedValues().get(1).getValue();
            typedResponse.new_id = (String) eventValues.getNonIndexedValues().get(2).getValue();
            typedResponse.acc = (String) eventValues.getNonIndexedValues().get(3).getValue();
            typedResponse.money = (BigInteger) eventValues.getNonIndexedValues().get(4).getValue();
            responses.add(typedResponse);
        }
        return responses;
    }

    public void registerSplitTransactionEventEventLogFilter(String fromBlock, String toBlock, List<String> otherTopcs, EventLogPushWithDecodeCallback callback) {
        String topic0 = EventEncoder.encode(SPLITTRANSACTIONEVENT_EVENT);
        registerEventLogPushFilter(ABI,BINARY,topic0,fromBlock,toBlock,otherTopcs,callback);
    }

    public void registerSplitTransactionEventEventLogFilter(EventLogPushWithDecodeCallback callback) {
        String topic0 = EventEncoder.encode(SPLITTRANSACTIONEVENT_EVENT);
        registerEventLogPushFilter(ABI,BINARY,topic0,callback);
    }

    @Deprecated
    public static Asset load(String contractAddress, Web3j web3j, Credentials credentials, BigInteger gasPrice, BigInteger gasLimit) {
        return new Asset(contractAddress, web3j, credentials, gasPrice, gasLimit);
    }

    @Deprecated
    public static Asset load(String contractAddress, Web3j web3j, TransactionManager transactionManager, BigInteger gasPrice, BigInteger gasLimit) {
        return new Asset(contractAddress, web3j, transactionManager, gasPrice, gasLimit);
    }

    public static Asset load(String contractAddress, Web3j web3j, Credentials credentials, ContractGasProvider contractGasProvider) {
        return new Asset(contractAddress, web3j, credentials, contractGasProvider);
    }

    public static Asset load(String contractAddress, Web3j web3j, TransactionManager transactionManager, ContractGasProvider contractGasProvider) {
        return new Asset(contractAddress, web3j, transactionManager, contractGasProvider);
    }

    public static RemoteCall<Asset> deploy(Web3j web3j, Credentials credentials, ContractGasProvider contractGasProvider) {
        return deployRemoteCall(Asset.class, web3j, credentials, contractGasProvider, BINARY, "");
    }

    public static RemoteCall<Asset> deploy(Web3j web3j, TransactionManager transactionManager, ContractGasProvider contractGasProvider) {
        return deployRemoteCall(Asset.class, web3j, transactionManager, contractGasProvider, BINARY, "");
    }

    @Deprecated
    public static RemoteCall<Asset> deploy(Web3j web3j, Credentials credentials, BigInteger gasPrice, BigInteger gasLimit) {
        return deployRemoteCall(Asset.class, web3j, credentials, gasPrice, gasLimit, BINARY, "");
    }

    @Deprecated
    public static RemoteCall<Asset> deploy(Web3j web3j, TransactionManager transactionManager, BigInteger gasPrice, BigInteger gasLimit) {
        return deployRemoteCall(Asset.class, web3j, transactionManager, gasPrice, gasLimit, BINARY, "");
    }

    public static class RegisterEventEventResponse {
        public Log log;

        public BigInteger ret;

        public String account;

        public BigInteger asset_value;
    }

    public static class TransferEventEventResponse {
        public Log log;

        public BigInteger ret;

        public String from_account;

        public String to_account;

        public BigInteger amount;
    }

    public static class AddTransactionEventEventResponse {
        public Log log;

        public BigInteger ret;

        public String id;

        public String acc1;

        public String acc2;

        public BigInteger money;
    }

    public static class UpdateTransactionEventEventResponse {
        public Log log;

        public BigInteger ret;

        public String id;

        public BigInteger money;
    }

    public static class SplitTransactionEventEventResponse {
        public Log log;

        public BigInteger ret;

        public String old_id;

        public String new_id;

        public String acc;

        public BigInteger money;
    }
}
